Отладка обработчиков правил обмена

При разработке правил обмена широко используется возможность программного переопределения поведения правил обмена – механизм обработчиков. Обработчики событий существенно расширяют функционал конвертации данных и являются незаменимым инструментом настройки правил обмена в тех случаях, когда интерактивных возможностей конфигурации недостаточно.

Обработчики и алгоритмы пишутся на языке той платформы, в которой они будут выполняться при обмене.
Если это платформа "1С: Предприятие 7.7", то код обработчиков интегрируется в код обработки выгрузки или загрузки. Соответственно, каждый обработчик или алгоритм выделяется в отдельную функцию и доступен для отладки при обмене.
Если выгрузка или загрузка происходят на платформе "1С: Предприятие 8", то код обработчиков, не интегрируется в код обработки обмена данными, а выгружается в файл правил обмена. В процессе обмена данными код обработчиков или алгоритмов берется из файла правил и выполняется непосредственно в контексте оператора "Выполнить". Для отладки кода обработчиков и алгоритмов можно воспользоваться обработкой "Универсальный обмен данными XML".

Обработка "Универсальный обмен данными XML" позволяет автоматически сформировать текст модуля отладки с кодом обработчиков и подключить этот модуль при выполнении обмена данными посредством внешней обработки. Для получения отладочного модуля с кодом обработчиков не требуется использование конфигурации "Конвертация данных", а также какое либо изменение существующих правил обмена или файлов данных выгрузки. При этом необходимо отметить, что при отладке выгрузки данных код обработчиков и алгоритмов берется из файла-правил и содержит только те обработчики и алгоритмы, которые используются при выгрузке. Соответственно, при отладке загрузки код обработчиков берется из файла-данных и содержит только те обработчики и алгоритмы, которые используются при загрузке.

Настройка отладки обработчиков

Для выполнения сеанса отладки откройте обработку "Универсальный обмен данными XML" и перейдите на закладку "Выгрузка" или "Загрузка" (в зависимости от варианта обмена). Установите флажок "Режим отладки обработчиков выгрузки (загрузки)" и отройте окно настройки отладки по кнопке "Настройка отладки выгрузки (загрузки)". Настройка отладки обработчиков и алгоритмов правил обмена выполняется за четыре шага:

Шаг 1: Выбор режима отладки алгоритмов
В первую очередь выберите режим отладки алгоритмов:

Режим "Без отладки алгоритмов" удобно использовать, когда мы точно знаем, что ошибка в обработчике не связана с кодом какого-либо алгоритма. В этом режиме код алгоритмов не выгружается в модуль отладки. Алгоритмы выполняются в контексте оператора "Выполнить" и их код недоступен для отладки.

Режим "Вызывать алгоритмы как процедуры" рекомендуется использовать в тех случаях, когда необходимо проводить отладку кода алгоритмов. Алгоритмы выгружаются как отдельные процедуры, а их вызовы вставляются в код обработчиков или других алгоритмов. Для передачи параметров в алгоритмы используется глобальная переменная "Параметры". Этот способ является рекомендуемым. Однако если разработчик использует какой-либо другой способ передачи параметров (например, используются локальные переменные обработчика), то при попытке запуска выгрузки или загрузки в режиме отладки обработчиков программа выдаст ошибку создания внешней обработки. Для отладки таких алгоритмов существует третий режим.

В режиме "Подставлять код алгоритмов по месту вызова" текст алгоритмов подставляется прямо в текст вызывающих их обработчиков или других алгоритмов с учетом вложенности вызовов. В этом режиме сняты ограничения на использование локальных переменных, однако есть ограничение на отладку рекурсивных алгоритмов. В момент формирования модуля отладки при обнаружении рекурсивных вызовов алгоритмов программа сообщит об ошибке.

Шаг 2: Формирование модуля отладки
Выполните выгрузку обработчиков по кнопке "Сформировать модуль отладки выгрузки (загрузки)". Сформированные обработчики и алгоритмы выводятся в отдельное окно для просмотра, содержимое которого можно скопировать в буфер обмена по кнопке "Копировать в буфер обмена".

Шаг 3: Создание внешней обработки
Запустите конфигуратор и создайте внешнюю обработку. В модуль обработки вставьте текст сгенерированного модуля и сохраните обработку под любым именем.

Шаг 4: Подключение внешней обработки
В заключении укажите имя файла внешней обработки в поле "Имя файла внешней обработки с модулем отладки" и нажмите на кнопку "Готово". При этом программа выполнит проверку по времени создания (обновления) файла обработки. Если обработка имеет более раннюю версию, чем версия файла модуля отладки (обработка не была обновлена данными выгрузки), то будет выведено предупреждение и форма настройки закрыта не будет.

После выполнения описанной настройки можно запускать выгрузку или загрузку в режиме отладки. При этом в распоряжении разработчика имеется весь функционал Конфигуратора по отладке кода внешней обработки.

Примечание:
Отладка глобального обработчика конвертации "После загрузки правил обмена" не поддерживается.

После завершения исправления выявленных ошибок в модуле отладки, необходимо самостоятельно перенести измененный код в соответствующие обработчики и алгоритмы в конфигурации "Конвертация данных".

Пример передачи параметров алгоритму

Как уже отмечалось выше для передачи параметров алгоритму рекомендуется использовать глобальную переменную "Параметры", которая доступна во всех обработчиках конвертации. Передачу параметров алгоритму рассмотрим на примере выгрузки остатков по заданному складу организации.

В глобальном обработчике конвертации "Перед выгрузкой данных" определяем структуру "ПараметрыАлгоритмов":

В обработчике "Перед обработкой" правила выгрузки данных определяем параметры для передачи в алгоритм "ВыгрузитьОстаткиПоСкладу":

В теле алгоритма получаем переданные параметры:

Заключение

В этой статье мы узнали о механизме отладки обработчиков событий и алгоритмов правил обмена. Выяснили, что при возникновении ошибок выгрузки или загрузки данных возможно использование обработки "Универсальный обмен данными XML" в режиме отладки обработчиков. Все необходимые тексты для отладки находится в файле-правил обмена или в файле-данных. Настройка и выполнение обмена данными становятся более удобными для использования и анализа.